package com.fiap.to;

import java.io.Serializable;
import java.util.Calendar;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.PrePersist;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;

@Entity
@Table(name = "AM_RECEBIMENTO")
public class RecebimentoTO implements Serializable {

	private static final long serialVersionUID = 1L;

	@Id
	@GenericGenerator(name = "seq_recebimento", strategy = "increment")
	@GeneratedValue(generator = "seq_recebimento")
	@Column(name = "ID_RECEBIMENTO")
	private int id_recebimento;
	@Column(name = "DT_RECEBIMENTO")
	@Temporal(TemporalType.DATE)
	private Calendar data;
	@OneToOne
	@JoinColumn(name = "ID_TIPO_RECEBIMENTO")
	private TipoRecebimentoTO tipoRecebimento;
	@Column(length = 8, precision = 2)
	private double qntPago;
	@Column(length = 200, nullable = true)
	private String obs;
	@ManyToOne(optional = true)
	@JoinColumn(name = "ID_PAGADOR")
	private PagadorTO pagador;
	@ManyToOne(optional = true)
	@JoinColumn(name = "ID_CLIENTE")
	private ClienteTO cliente;
	@ManyToOne(optional = true)
	@JoinColumn(name = "ID_OS")
	private OrdemServicoTO os;
	@PrePersist
	private void executaAntesDePersistir() {
		System.out.println("Persistindo...");
	}

	public RecebimentoTO() {
		super();
		// TODO Auto-generated constructor stub
	}

	public RecebimentoTO(int id_recebimento, Calendar data,
			TipoRecebimentoTO tipoRecebimento, double qntPago, String obs,
			PagadorTO pagador, ClienteTO cliente, OrdemServicoTO os) {
		super();
		this.id_recebimento = id_recebimento;
		this.data = data;
		this.tipoRecebimento = tipoRecebimento;
		this.qntPago = qntPago;
		this.obs = obs;
		this.pagador = pagador;
		this.cliente = cliente;
		this.os = os;
	}

	public int getId_recebimento() {
		return id_recebimento;
	}

	public void setId_recebimento(int id_recebimento) {
		this.id_recebimento = id_recebimento;
	}

	public Calendar getData() {
		return data;
	}

	public void setData(Calendar data) {
		this.data = data;
	}

	public TipoRecebimentoTO getTipoRecebimento() {
		return tipoRecebimento;
	}

	public void setTipoRecebimento(TipoRecebimentoTO tipoRecebimento) {
		this.tipoRecebimento = tipoRecebimento;
	}

	public double getQntPago() {
		return qntPago;
	}

	public void setQntPago(double qntPago) {
		this.qntPago = qntPago;
	}

	public String getObs() {
		return obs;
	}

	public void setObs(String obs) {
		this.obs = obs;
	}

	public PagadorTO getPagador() {
		return pagador;
	}

	public void setPagador(PagadorTO pagador) {
		this.pagador = pagador;
	}

	public ClienteTO getCliente() {
		return cliente;
	}

	public void setCliente(ClienteTO cliente) {
		this.cliente = cliente;
	}

	public OrdemServicoTO getOs() {
		return os;
	}

	public void setOs(OrdemServicoTO os) {
		this.os = os;
	}

}
